package com.sdkx.app.activitys;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;

import com.sdkx.app.R;

public abstract  class BaseActivity extends AppCompatActivity {
    /**
     * 初始化并显示Fragment，并将其压栈
     * @param classobj
     */
    public void startFragment(Class<? extends Fragment> classobj){
        try {
            if(classobj == null) return;
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction tx = fm.beginTransaction();
            tx.replace(R.id.layer1,classobj.newInstance(),classobj.getName());
            tx.addToBackStack(null);
            tx.commit();
        } catch (IllegalAccessException | InstantiationException e) {
            e.printStackTrace();
        }
    }
    public void startFragment(Class<? extends Fragment> classobj,Bundle bundle){
        try {
            if(classobj == null) return;
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction tx = fm.beginTransaction();
            Fragment  fragment = classobj.newInstance();
            fragment.setArguments(bundle);
            tx.replace(R.id.layer1,fragment,classobj.getName());
            tx.addToBackStack(null);
            tx.commit();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }

    }
    /**
     * 按照逻辑回退栈顶。
     */
    public void  popBack(){
        FragmentManager fm = getSupportFragmentManager();
        fm.popBackStack();
    }
    /**

     * 参数 obj   : 指定的Fragment类的class
     * 说明： 将指定的Fragment类作为参数，FragmentManager将会在堆栈中查找该类，
     *        显示这个类并将该类以上的Fragment删除掉
     *
     */
    /**
     * * 回退到指定的Fragment页面
     * @param obj  指定的Fragment类的class
     * 说明： 将指定的Fragment类作为参数，FragmentManager将会在堆栈中查找该类，
     *         显示这个类并将该类以上的Fragment删除掉
     */
    public void popToFragment(Class<? extends Fragment> obj){
        FragmentManager fm = getSupportFragmentManager();
        fm.popBackStack(obj.getName(),0);
    }
}
